package services.midas;
import java.util.List;
import java.util.Map;

import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONObject;

import models.common.user.DASSwBuild;
import models.common.user.DASUser;
import models.midas.form.CommandClassForm;

public interface CommandClassService  extends MidasStubIntf{
	public static String[] STATES = new String[]{"Active", "Passive", "Hidden", "Removed"};
	public static String[] APPLICATIONS = new String[]{"P (Platform)", "F (Fixed Application)", "M (MSC/HLR)", "S (BSC)", "W (TETRA)"};	
	
	public boolean save(CommandClassForm commandClass) throws Exception;
	
	public boolean accept(CommandClassForm commandClass) throws Exception;
	
	public boolean decline(CommandClassForm commandClass) throws Exception;
	
	public boolean propose(CommandClassForm commandClass) throws Exception;
	
	public boolean cancel(CommandClassForm commandClass) throws Exception;
	
	public boolean checkGrammar(CommandClassForm commandClass) throws Exception;
	
	public CommandClassForm newVersion(CommandClassForm commandClass) throws Exception;
	
	public boolean delete(CommandClassForm commandClass) throws Exception;
	
	public Map<Long,String> getAvailableClassLetters() throws Exception;
	
	public boolean hasAvailableClassLetter() throws Exception;
	
	public CommandClassForm initCommandClass() throws Exception;
	
	public List<DASSwBuild> getSwBuildList(String release, String build);
	
	public List<String> getAvailableVersions() throws Exception;
	
	public JSONObject getCommandClassList(int pageIndex,int pageSize);
	
	public JSONObject getCommandClassById(long id);
}
